<?php

namespace app\home\controller;

use AlipayTradeService;
use think\Controller;
use think\Request;

class Order extends Controller
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        return view("/pay/ali");
    }

    // 购买
    public function pay(Request $request)
    {
        $data = $request->param();

        $OrderNum = mt_rand(100000000000,999999999999);

        $price = $data['price'];
        $number = $data['number'];

        $sum = $price * $number;

        // 支付宝支付跳转
        $html = "<form name='alipayment' id='alipay' action='/plugins/alipay/pagepay/pagepay.php' method='post' style='display:none'>
                    <!-- 订单编号 -->
                    <input id='WIDout_trade_no' name='WIDout_trade_no' value='{$OrderNum}'/>
                    <!-- 商场 -->
                    <input id='WIDsubject' name='WIDsubject' value='默生'/>
                    <!-- 总金额 -->
                    <input id='WIDtotal_amount' name='WIDtotal_amount' value='{$sum}'/>
                    <!-- 商品信息 -->
                    <input id='WIDbody' name='WIDbody' value='哈哈哈'/>
                    <button class='new-btn-login' type='submit' style='text-align:center;'>付 款</button>
		        </form><script>document.getElementById('alipay').submit()</script>";
        echo $html;
    }

    // 支付结果页 支付宝的同步跳转地址 成功之后跳转的地址
    public function payResult(Request $request)
    {
        # 接受参数
        $data = $request->param();

        // 验证是否支付成功
        require_once("./plugins/alipay/config.php");
        require_once './plugins/alipay/pagepay/service/AlipayTradeService.php';

        $alipaySevice = new \AlipayTradeService($config);
        $result = $alipaySevice->check($data);

        // 支付成功返回的页面
        if($result){

            // 验签成功返回的界面
            //支付宝交易号
            $trade_no = htmlspecialchars($data['trade_no']);

            echo "success"."<br />"."支付宝交易号：".$trade_no;
            die;
        }else{
            // 支付验签失败返回的页面
            echo "验证失败";
            die;
        }
    }

    // 支付宝异步跳转地址  再本地并不可以调用成功，因为这是支付宝发送服务器端的。
    public function payRe(){
        // 支付成功之后 支付宝的服务器端向我们的服务器端发送的一个通知，会传递一下参数，我们通过这些参数进行验证然后修改订单状态。
        // 接受参数
        $data = request()->param();
        // 验签
        require_once './plugins/alipay/config.php';
        require_once './plugins/alipay/pagepay/service/AlipayTradeService.php';

        $alipaySevice = new \AlipayTradeService($config);
        // 记录日志
        $alipaySevice->writeLog(var_export($_POST,true));
        // 返回的支付结果
        $result = $alipaySevice->check($data);

        // 判断支付结果
        if($result){
            // 验签成功之后的结果
            // 判断交易状态
            if($data['trade_status'] == "TRADE_SUCCESS"){
                // 交易支付成功


                echo "success";
                die;

            }else if($data['trade_status'] == "TRADE_FINISHED"){
                # 交易结束，不可退款
                echo "fail";
                die;
            }
            echo "success";
            die;
        }else{
            # 验签失败
            $alipaySevice->writeLog("验签失败");
            // 失败返回的结果
            echo "fail";die;
        }
    }
}
